package com.hlkj.pay.vo.merchant.req.agent;

import java.math.BigDecimal;
import java.util.List;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

import com.hlkj.pay.vo.BaseReq;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
* 代理信息表
* @TableName t_merchant_info
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class AgentInfoAddReq extends BaseReq {

    /**
    * 代理类型，1=个人，2=企业
    */
    @Schema(description = "代理类型，1=个人，2=企业")
    @NotNull(message = "代理类型 不能为空")
    private Integer type;
    /**
     * 是否禁用：0-否；1-是；
     */
    @Schema(description = "状态：0-否；1-是；")
    @NotNull(message = "状态 不能为空")
    private Integer status;
    /**
    * 代理名称或者企业全称
    */
    @Schema(description = "代理名称或者企业全称 个人不传")
    // @NotEmpty(message = "企业全称 不能为空")
    private String name;
    /**
    * 营业执照号码
    */
    @Schema(description = "营业执照号码 个人不传")
    // @NotEmpty(message = "营业执照号码 不能为空")
    private String license;
    /**
    * 代理初始登陆账号
    */
    @Schema(description = "代理初始登陆账号")
    @NotEmpty(message = "登陆账号 不能为空")
    private String account;
    /**
    * 代理简称或者企业简称
    */
    @Schema(description = "代理简称或者企业简称 个人不传")
    // @NotEmpty(message = "简称 不能为空")
    private String shortName;
    /**
    * 法人姓名
    */
    @Schema(description = "法人姓名")
    @NotEmpty(message = "法人姓名 不能为空")
    private String legalName;
    /**
    * 法人身份证号码
    */
    @Schema(description = "法人身份证号码")
    @NotEmpty(message = "法人身份证号码 不能为空")
    private String legalIdNum;
    /**
    * 法人手机号码
    */
    @Schema(description = "法人手机号码")
    @NotEmpty(message = "法人手机号码 不能为空")
    private String legalPhone;
    /**
    * 法人地址
    */
    @Schema(description = "法人地址")
    private String legalAddress;
    /**
    * 分润规则，1=平台手续费分润，2=间联代理分润，3=代理与平台手续费同时分润
    */
    @Schema(description = "分润规则，1=平台手续费分润，2=间联代理分润，3=代理与平台手续费同时分润")
    @NotNull(message = "分润规则 不能为空")
    private Integer profitSharingRule;
    /**
     * 分润比例
     */
    @Schema(description = "分润比例 分润规则为1/3 时 必填 可以为0")
    // @NotNull(message = "分润比例 不能为空 1 3")
    private BigDecimal profitRate;
    /**
    * 备注
    */
    @Schema(description = "备注")
    private String note;
    /**
    * 营业执照照片
    */
    @Schema(description = "营业执照照片 个人不传")
    private String licensePhoto;
    /**
    * 身份证正面
    */
    @Schema(description = "身份证正面")
    @NotEmpty(message = "身份证正面 不能为空")
    private String legalIdCardFront;
    /**
    * 身份证反面
    */
    @Schema(description = "身份证反面")
    @NotEmpty(message = "身份证反面 不能为空")
    private String legalIdCardBack;

    /**
    * 上级代理
    */
    @Schema(description = "上级代理")
    private String superAgent;
    /**
    * 代理状态，1=待补充资料，2=待审核，3=待签约，4=签约中，5=签约成功，0=审核驳回
    */
    @Schema(description = "代理状态，1=待补充资料，2=待审核，3=待签约，4=签约中，5=签约成功，0=审核驳回")
    private Integer signStatus;
   
    /**
    * 交易是否关闭，0=关闭，1=开启
    */
    @Schema(description = "交易是否关闭，0=关闭，1=开启")
    private Integer apiStatus;
    /**
    * 代理余额
    */
    @Schema(description = "代理余额")
    private BigDecimal merchBalance;
    /**
    * 冻结金额
    */
    @Schema(description = "冻结金额")
    private BigDecimal frozenAmount;
    /**
    * 分润金额
    */
    @Schema(description = "分润金额")
    private BigDecimal profitAmount;
    /**
    * 分润金额
    */
    @Schema(description = "在途金额")
    private BigDecimal transitAmount;
    
    /**
    * 技术服务费
    */
    @Schema(description = "技术服务费")
    private BigDecimal tsFee;
    /**
    * 外扣费率
    */
    @Schema(description = "外扣费率")
    private BigDecimal commRateBase;
    /**
     * 发展下级代理权限 0 关闭 1 开启
     */
    @Schema(description = "发展下级代理权限 0 关闭 1 开启")
    @NotNull(message = "发展下级代理权限 不能为空")
    private Integer lowerAgentStatus;
    /**
     * 发展下级商户权限 0 关闭 1 开启
     */
    @Schema(description = "发展下级商户权限 0 关闭 1 开启")
    @NotNull(message = "发展下级商户权限 不能为空")
    private Integer lowerMerchantStatus;

    /**
     * 是否发送开通提醒 0 否 1 是
     */
    @Schema(description = "是否发送开通提醒 0 否 1 是")
    @NotNull(message = "是否发送开通提醒 不能为空")
    private Integer openStatus;
    /**
     * 密码设置 0 随机密码 1 自定义密码
     */
    @Schema(description = "密码设置 0 随机密码 1 自定义密码")
    @NotNull(message = "密码设置 不能为空")
    private Integer passwordType;
    /**
     * 自定义密码
     */
    @Schema(description = "自定义密码")
    private String password;
    /**
     * 结算卡正面or 对公开户证明
     */
    @Schema(description = "结算卡正面 or 对公开户证明")
    @NotEmpty(message = "结算卡正面 不能为空")
    private String settleCardFrontUrl;
    /**
     * 结算卡账号类型 0：对公账户 1：对私账户
     */
    @Schema(description = "结算卡账号类型 0：对公账户 1：对私账户 ")
    @NotNull(message = "结算卡账号类型 不能为空")
    private Integer accountType;
    /**
     * 结算卡号
     */
    @Schema(description = "结算卡号")
    @NotEmpty(message = "结算卡号 不能为空")
    private String cardNo;
    /**
     * 结算银行名称
     */
    @Schema(description = "结算银行名称")
    @NotEmpty(message = "结算卡号 不能为空")
    private String bankName;
    /**
     * 结算银行支行
     */
    @Schema(description = "结算银行支行 对公必填")
    private String branchName;
    /**
     * 结算银行联行号
     */
    @Schema(description = "结算银行联行号 对公必填")
    private String branchCode;
    /**
     * 结算银行开户省市
     */
    @Schema(description = "结算银行开户省市 对公必填")
    private String bankAreaName;
    /**
     * 服务商列表
     */
    @Schema(description = "服务商列表")
    private List<String> providerCodeList;
    /**
     * 服务商列表
     */
    @Schema(description = "通道列表")
    private List<String> channelCodeList;
}
